<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>构造函数中作用域使用形态</title>
</head>
<body>
    
</body>
<script>
    /*
        构造函数中作用域使用形态
            构造函数和普通函数的作用域其实是一样，海更加的方便我们的理解
    */
    function jimmy(){
        let i = 1
        this.sum = function(){
            console.log(++i)
        }
        return this.sum
        /*
            上面return this.sum 其实相对于下面的这段代码
                因为函数的this.sum被使用了 所以这个函数就不会被销毁  至始至终操作的n都是同一个n
            return {
                sum:this.sum
            }
        */
    }
    let jim = new jimmy()
    jim()  //2
    jim()  //3

    /*
        虽然在函数中他的那段内存空间是不会被销毁的呃 
            但是我们呢不同的用户去接收它 就相当于是不同的用户去开辟了一段空间  只要是新开辟的空间  那么它的值就是函数最初设置的那个值
                所以下面这段代码的值还是 2和3  而不是4和5
    */

    let xx = new jimmy()
    xx()  //2
    xx()  //3
</script>
</html>